package cn.springcloud.fix.demo.sort;

import java.util.Arrays;
import java.util.Stack;

public class BubbleSort {

    public static void main(String[] args) {
        int[] array = new int[]{5, 8, 6, 3, 9, 2, 1, 7, 4};
        bubbleSort(array);
        System.out.println(Arrays.toString(array));
    }

    // static void preOrder(node) {
    //     System.out.println(node.item);
    //     preOrder(node.left);
    //     preOrder(node.right);
    // }
    //
    // static void preOrder(node) {
    //     Stack<Integer> stack = new Stack<>();
    //     stack.push(node);
    //     while (!stack.empty()){
    //         node = stack.pop();
    //         System.out.println(node.item);
    //         stack.push(node.right);
    //         stack.push(node.left);
    //     }
    // }

    // static int binarySerach(int[] array, int key) {
    //     int left = 0;
    //     int right = array.length - 1;
    //     while (left <= right) {
    //         int mid = (left + right) / 2;
    //         if (array[mid] == key) {
    //             return mid;
    //         } else if (array[mid] < key) {
    //             left = mid + 1;
    //         } else {
    //             right = mid + 1;
    //         }
    //     }
    //     return -1;
    // }

    /**
     * 冒泡排序
     */
    private static void bubbleSort(int arr[]) {
        //每一轮冒泡都是把最大的数值换到最后，也可以把最小的数值换到最后
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length - 1 - i; j++) {
                System.out.println("arr[" + j + "]" + " and " + "arr[" + (j + 1) + "]");
                if (arr[j] > arr[j + 1]) {
                    int tmp = arr[j + 1];
                    arr[j + 1] = arr[j];
                    arr[j] = tmp;
                }
            }
        }
    }

    /**
     * 选择排序
     */
    private static void normalSort(int arr[]) {
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = i + 1; j < arr.length; j++) {
                System.out.println("arr[" + i + "]" + " and " + "arr[" + j + "]");
                if (arr[i] > arr[j]) {
                    int tmp = arr[j];
                    arr[j] = arr[i];
                    arr[i] = tmp;
                }
            }
        }
    }
}
